﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Collections;

namespace Distrackting.DataLayer
{
    public class BDEstatisticas
    {
        public static int contarFotos()
        {
            try
            {
                return dataFoto.contarFotos();
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static int contarUtilizadores()
        {
            try
            {
                return dataUtilizador.contarUtilizadores();
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static int contarPercursos()
        {
            try
            {
                return dataPercurso.contarPercursos();
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static int contarTestemunhos()
        {
            try
            {
                return dataTestemunho.contarTestemunhos();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        
        public static Hashtable getMaisPercorridos()
        {
            try
            {
                Hashtable ht = new Hashtable();
                foreach (Percurso p in dataPercurso.getPercursos())
                {
                    int testemunhos = p.Testemunhos.Count;
                    ht.Add(p.nome, testemunhos);
                }
                return ht;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Hashtable getMaisDescarregados()
        {
            try
            {
                Hashtable ht = new Hashtable();
                foreach (Percurso p in dataPercurso.getPercursos())
                {
                    ht.Add(p.nome, p.descarregado);
                }
                return ht;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Hashtable getPercursosPorUtilizador()
        {
            try
            {
                Hashtable ht = new Hashtable();

                foreach (Utilizador u in dataUtilizador.getUtilizadores())
                {
                    ht.Add(u.email, 0);
                }

                foreach (Percurso p in dataPercurso.getPercursos())
                {
                    Utilizador u = dataUtilizador.getUtilizador(p.cod_utilizador);
                    int vezes = Convert.ToInt32(ht[u.email]);
                    ht[u.email] = vezes + 1;
                }

                return ht;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Hashtable getTestemunhosPorUtilizador()
        {
            try
            {
                Hashtable ht = new Hashtable();

                foreach (Utilizador u in dataUtilizador.getUtilizadores())
                {
                    ht.Add(u.email, 0);
                }

                foreach (Testemunho t in dataTestemunho.getTestemunhos())
                {
                    Utilizador u = dataUtilizador.getUtilizador(t.cod_utilizador);
                    int vezes = Convert.ToInt32(ht[u.email]);
                    ht[u.email] = vezes + 1;
                }

                return ht;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Hashtable getFotosPorUtilizador()
        {
            try
            {
                Hashtable ht = new Hashtable();

                foreach (Utilizador u in dataUtilizador.getUtilizadores())
                {
                    ht.Add(u.email, 0);
                }

                foreach (Foto f in dataFoto.getFotos())
                {
                    Utilizador u = dataUtilizador.getUtilizador(f.cod_utilizador);
                    int vezes = Convert.ToInt32(ht[u.email]);
                    ht[u.email] = vezes + 1;
                }

                return ht;
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        public static Hashtable getComentariosPorUtilizador()
        {
            try
            {
                Hashtable ht = new Hashtable();

                foreach (Utilizador u in dataUtilizador.getUtilizadores())
                {
                    ht.Add(u.email, 0);
                }

                foreach (Comentario c in dataComentario.getComentarios())
                {
                    Utilizador u = dataUtilizador.getUtilizador(c.cod_utilizador);
                    int vezes = Convert.ToInt32(ht[u.email]);
                    ht[u.email] = vezes + 1;
                }

                return ht;
            }
            catch (Exception e)
            {
                throw e;
            }
        }
    }
}
